﻿using Swimj.CommonLib.Attributes;

namespace Production.CommonLib.Models
{
    public class ProductionPlanInfoResponseDto
    {
        public int Id { get; set; }

        /// <summary>
        /// 生产计划编码
        /// </summary>
        [TableColumn(DisplayText = "生产计划编码")]
        public string? Code { get; set; }

        /// <summary>
        /// 生产计划名称
        /// </summary>
        [TableColumn(DisplayText = "生产计划名称")]
        public string? Name { get; set; }

        /// <summary>
        /// 销售订单标识
        /// </summary>
        public Guid? OrderId { get; set; }

        /// <summary>
        /// 销售订单编码
        /// </summary>
        public string? OrderCode { get; set; }

        /// <summary>
        /// 生产计划类型
        /// </summary>
        public int PlanType { get; set; }

        /// <summary>
        /// 单据日期
        /// </summary>
        public DateTime DocketDate { get; set; }

        /// <summary>
        /// 单据状态
        /// </summary>
        public int DocketStatus { get; set; }

        public int StandardBomId => StandardBom.Id;

        public StandardBomInfoResponseDto StandardBom { get; set; } = new();

        /// <summary>
        /// 生产工艺
        /// </summary>
        public TechnologyInfoResponseDto Technology { get; set; } = new();

        /// <summary>
        /// 预期开始时间
        /// </summary>
        [TableColumn(DisplayText = "预期开始时间")]
        public DateTime? ExpectStartDate { get; set; }

        /// <summary>
        /// 预期结束时间
        /// </summary>
        [TableColumn(DisplayText = "预期结束时间")]
        public DateTime? ExpectEndDate { get; set; }

        /// <summary>
        /// 优先级
        /// </summary>
        [TableColumn(DisplayText = "优先级")]
        public int PriorityLevel { get; set; }

        /// <summary>
        /// 排程类型
        /// </summary>
        [TableColumn(DisplayText = "排程类型")]
        public int ScheduleType { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [TableColumn(DisplayText = "生产数量")]
        public decimal Quality { get; set; }


        /// <summary>
        /// 备注
        /// </summary>
        public string? Description { get; set; }
    }
}